#include "ThreadPool_V4.hpp"
#include <memory>

typedef Yohifo::Task<int> type;

// 回调函数
void callBack(type& task)
{
    // 获取计算结果后打印
    std::string ret = task.getResult();

    std::cout << "计算结果为: " << ret << std::endl;
}

int main()
{
    std::cout << Yohifo::ThreadPool<type>::getInstance() << std::endl;
    std::cout << Yohifo::ThreadPool<type>::getInstance() << std::endl;
    std::cout << Yohifo::ThreadPool<type>::getInstance() << std::endl;
    std::cout << Yohifo::ThreadPool<type>::getInstance() << std::endl;
    std::cout << Yohifo::ThreadPool<type>::getInstance() << std::endl;

    // // 还有后续动作
    // while(true)
    // {
    //     // 输入 操作数 操作数 操作符
    //     int x = 0, y = 0;
    //     char op = '+';
    //     std::cout << "输入 x: ";
    //     std::cin >> x;
    //     std::cout << "输入 y: ";
    //     std::cin >> y;
    //     std::cout << "输入 op: ";
    //     std::cin >> op;

    //     // 构建任务对象
    //     type task(x, y, op);

    //     // 装载任务
    //     Yohifo::ThreadPool<type>::getInstance(callBack)->pushTask(task);
    // }

    return 0;
}


// #include <iostream>
// #include <pthread.h>
// #include "Signal.hpp"

// int main()
// {
//     // 创建一批线程
//     pthread_t arr[10];
//     for(int i = 0; i < 10; i++)
//     {
//         pthread_create(arr + i, nullptr, [](void*)->void*
//             {
//                 // 获取句柄
//                 auto ptr = Yohifo::Signal::getInstance();
//                 ptr->print();
//                 return nullptr;
//             }, nullptr);
//     }

//     for(int i = 0; i < 10; i++)
//         pthread_join(arr[i], nullptr);

//     return 0;
// }